PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

# 设置 c 语言的版本为 c99
#set(CMAKE_C_FLAGS "-std=c99")

# 指明本项目包含一个子目录 threads
#ADD_SUBDIRECTORY(cmake_1)

#AUX_SOURCE_DIRECTORY(entry.c ROOT_SRC)
AUX_SOURCE_DIRECTORY(threads/rwlock.c CHILD_SRC)
AUX_SOURCE_DIRECTORY(threads/condvar.c cond_var)
AUX_SOURCE_DIRECTORY(threads/barrier.c barrier)

AUX_SOURCE_DIRECTORY(include APUE_SRC)

# 扫描 pthread 库
find_package(Threads)

# 先调用一个CMake模块，适合此平台的线程包，然后设置CMAKE_THREAD_LIBS_INIT变量（以及其他一些变量）。它不告诉CMake将任何可执行文件与>它找到的任何线程库链接起来。您告诉CMake使用 target_link_libraries（）命令将可执行文件与线程库链接起来。所以，举个例子，让我们说你的程
# 序叫做测试。要将它链接到需要的线程：
# 第11章 线程的测试入口，
# 解开以下注释的同时，需要解开最后面 target_include_directories -> threads 的注释
#ADD_EXECUTABLE(main threads_entry.c ${CHILD_SRC} ${APUE_SRC} ${cond_var} ${barrier})


AUX_SOURCE_DIRECTORY(threadctl/timeout.c timeout)
AUX_SOURCE_DIRECTORY(threadctl/detach.c detach)


ADD_EXECUTABLE(main 
    threads_ctl_entry.c 
    ${APUE_SRC} 
    ${timeout}
    ${detach}
)

# 将 pthread 库 链接到 main 中
target_link_libraries(main ${CMAKE_THREAD_LIBS_INIT})


# 指明 可执行文件 main 需要链接一个 名为 mutex3   的链接库
#TARGET_LINK_LIBRARIES(main add)

#target_link_libraries(main PUBLIC add_lib)

#find_library("pthread")

# target_include_directories(main PUBLIC 
#                             "${PROJECT_BINARY_DIR}"
#                             "${PROJECT_SOURCE_DIR}/threads"
# )      

target_include_directories(main PUBLIC 
                            "${PROJECT_BINARY_DIR}"
                            "${PROJECT_SOURCE_DIR}/threadctl"
)   

target_include_directories(main PUBLIC 
                            "${PROJECT_BINARY_DIR}"
                            "${PROJECT_SOURCE_DIR}/include"
)